package com.xbongbong.saas.service;

import com.xbongbong.paas.elasticsearch.pojo.dto.SearchDataInConditionDTO;
import com.xbongbong.paas.pojo.dto.DetailLabelUpdateDTO;
import com.xbongbong.paas.pojo.vo.FormDataUpdateBatchVO;
import com.xbongbong.paas.pojo.vo.SearchDataInConditionVO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.domain.entity.LabelEntity;
import com.xbongbong.pro.label.pojo.dto.AllLabelShowVO;
import com.xbongbong.pro.label.pojo.dto.LabelDeleteDTO;
import com.xbongbong.pro.label.pojo.dto.LabelListDTO;
import com.xbongbong.pro.label.pojo.dto.LabelRepeatDTO;
import com.xbongbong.pro.label.pojo.dto.LabelSaveDTO;
import com.xbongbong.pro.label.pojo.dto.LabelShowVO;
import com.xbongbong.pro.label.pojo.dto.LabelSortDTO;
import com.xbongbong.pro.label.pojo.dto.LabelTotalDeleteDTO;
import com.xbongbong.pro.label.pojo.vo.LabelDeleteVO;
import com.xbongbong.pro.label.pojo.vo.LabelListVO;
import com.xbongbong.pro.label.pojo.vo.LabelRepeatVO;
import com.xbongbong.pro.label.pojo.vo.LabelSaveVO;
import com.xbongbong.pro.label.pojo.vo.LabelSortVO;
import com.xbongbong.pro.label.pojo.vo.LabelTotalDeleteVO;

import java.util.List;

/**
 * @author guohui.zhang
 * @Title:
 * @date 2020/11/318:40
 */
public interface LabelService  {


    /**
     * 获取对应分组下的列表
     * @param labelListDTO
     * @return
     * @throws XbbException
     */
    LabelListVO getLabelList(LabelListDTO labelListDTO) throws XbbException;

    /**
     * 保存标签
     * @param labelSaveDTO
     * @return
     * @throws XbbException
     */
    LabelSaveVO saveLabel(LabelSaveDTO labelSaveDTO) throws XbbException;

    /**
     * 删除标签
     * @param labelDeleteDTO
     * @return
     * @throws XbbException
     */
    LabelDeleteVO deleteLabel(LabelDeleteDTO labelDeleteDTO) throws XbbException;

    /**
     * 标签排序
     * @param labelSortDTO
     * @return
     * @throws XbbException
     */
    LabelSortVO sortLabel(LabelSortDTO labelSortDTO) throws XbbException;

    /**
     * 新建保存标签时判断标签名是否重复
     * @param labelRepeatDTO
     * @return
     * @throws XbbException
     */
    LabelRepeatVO repeat(LabelRepeatDTO labelRepeatDTO) throws XbbException;

    LabelTotalDeleteVO deleteTotal(LabelTotalDeleteDTO labelTotalDeleteDTO) throws XbbException;

    /**
     * 获取全部标签   分组降序,标签sort升序
     * @param labelListDTO
     * @return
     * @throws XbbException
     */
    LabelShowVO getAllLabelList(LabelListDTO labelListDTO) throws XbbException;

    /**
     * 获取个人和企业标签   分组降序,标签sort升序
     * @param labelListDTO
     * @return
     * @throws XbbException
     */
    AllLabelShowVO getPersonLabelList(LabelListDTO labelListDTO) throws XbbException;

    /**
     * 创建默认标签
     * @param labelListDTO
     * @return
     * @throws XbbException
     */
    LabelEntity createDefaultLabel(LabelListDTO labelListDTO) throws XbbException;

    /**
     * 详情页编辑标签
     * @param detailLabelUpdateDTO
     * @return
     * @throws XbbException
     */
    FormDataUpdateBatchVO updateDetailLabel(DetailLabelUpdateDTO detailLabelUpdateDTO) throws XbbException ;

    /**
     * 数据列表获取级联标签(标签分组和标签)
     * @param searchDataInConditionDTO
     * @throws
     * @return
     * @author lijiangren
     * @date 2021-09-27 14 03
     */
    SearchDataInConditionVO getConditionLabel(SearchDataInConditionDTO searchDataInConditionDTO) throws XbbException;
}
